package client;
import java.util.concurrent.Semaphore;

import file.BufferMap;
import file.File;
import file.SharedFiles;


public class ConnectionToPeers implements Runnable {

	private File _file;
	private Thread _thread;
	private int _maxAskedSizePieces;
	private Client _client;

	public ConnectionToPeers(File f, int max, long intervalle, Client c){
		_file=f;
		_maxAskedSizePieces = max;
		_client = c;
		_thread = new Thread(this, "ConnectionToPeers");
		_thread.start();
		
		UpdatePeers up = new UpdatePeers(_file, intervalle, _client._SEMAPHORE_NB_CONNECTION_);
	}



	@Override
	public void run() {
		/*
		 * TODO vérifier que le fichier téléchargé est complet en machine (quand bien même le bufferMap dit le contraire; 
		 * ex: les dernières pièces sont en cours de téléchargement) 
		 */
	/*	for (int i=0; i < _file.getPeers().size(); i++){
			ConnectedPeer cp = new ConnectedPeer(_file.getPeers().get(i).getIp(), _file.getPeers().get(i).getPort(), _file, _maxAskedSizePieces, _client._SEMAPHORE_NB_CONNECTION_);
			_client.getPeersImConnectedTo().add(cp);
		}
		*/
		while(!_file.getBufferMap().getBufferMap().equals(_file.getDispo().getBufferMap())){
			
			for (int i=0; i < _file.getPeers().size(); i++){
				ConnectedPeer cp = new ConnectedPeer(_file.getPeers().get(i).getIp(), _file.getPeers().get(i).getPort(), _file, _maxAskedSizePieces, _client._SEMAPHORE_NB_CONNECTION_);
				_client.getPeersImConnectedTo().add(cp);
			}
		}
		if(_file.getBufferMap().isComplete()){
			
			try {
				Thread.sleep(10000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			SharedFiles.moveToSeed(_file);
			_client.getMySeed().add(_file);
			_client.getMyLeech().remove(_file);
		}
	}

}
